﻿using System;
using System.Collections.Generic;
using System.Text;
using Castle.ActiveRecord;
using Atendex.Dominio;

namespace Atendex.Dominio.ActiveRecord
{
    [ActiveRecord("atendente")]
    [Serializable]
    public class AtendenteAR : ActiveRecordBase<AtendenteAR>, IAtendente
    {
        private AtendenteAR() { }
        internal AtendenteAR(string nome, string login, string senha)
        {
            if (string.IsNullOrEmpty(nome)) throw new DominioException("Nome do atendente não pode ser vazio.");
            if (string.IsNullOrEmpty(login)) throw new DominioException("Login do atendente não pode ser vazio.");
            if (string.IsNullOrEmpty(senha)) throw new DominioException("Senha do atendente não pode ser vazio.");


            this.Nome = nome;
            this.Login = login;
            this.Senha = senha;
            this.Ativo = true;
        }

        [PrimaryKey]
        public int Id { get; private set; }
        
        [Property(Unique=true)]
        public string Login { get; set; }

        [Property]
        public string Nome { get; set; }

        [Property]
        public string Senha{ get; set; }

        [Property]
        public bool Ativo { get; set; }

        [HasMany(typeof(AtendimentoAR), Cascade=ManyRelationCascadeEnum.AllDeleteOrphan, Inverse=true)]
        public IList<IAtendimento> Atendimentos { get; set; }

        #region IAtendente Members



        #endregion
    }
}
